home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Linux Cubed Series 7: Sunsite
/
Linux Cubed Series 7 - Sunsite Vol 1.iso
/
system
/
admin
/
linuxcon.000
/
linuxcon
/
linuxconf-1.6
/
xconf
/
files.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-01-06
|
1KB
|
63 lines
#include <stdio.h>
#include <string.h>
#include <limits.h>
#include "../misc/misc.h"
#include "xconf.h"
/*
Read a file holding a list of option (one line per option)
Return the number of options placed in tbopt with strdup().
Return -1 if any error. The caller must call free() for every
item in tbopt[].
*/
int xconf_readflist(
const char *fname,
char *tbopt[],
int maxopt) // Maximum number of line allowed in tbopt[]
{
int ret = -1;
char path[PATH_MAX];
strcpy (path,fname);
FILE *fin = fopen (path,"r");
if (fin == NULL){
sprintf (path,USR_LIB_XCONF "/%s",fname);
fin = fopen (path,"r");
}
if (fin == NULL){
xconf_error (
"The file %s can't be found\n"
"It is normally found in " USR_LIB_XCONF "%s\n"
,fname
);
}else{
char buf[300];
ret = 0;
while (fgets(buf,sizeof(buf)-1,fin)!= NULL){
str_strip (buf,buf);
/* #Specification: data files / option list
Files holding options list are ascii files.
They contain one option per line. They may have
blank lines. Line beginning with ; are comments
and will be silently skipped.
Trailing blanks are eliminated. Blanks at the
beginning of the line are kept.
Option usally begin with a keyword and then a description.
*/
if (buf[0] != ';' && buf[0] != '\0'){
if (ret == maxopt){
xconf_error (
"Too many option in file %s\n",fname);
break;
}else{
tbopt[ret++] = strdup(buf);
}
}
}
fclose (fin);
}
return ret;
}